About box-shadow

this 来聊三块钱的呗~

涵义

this,至关重要的存在。
总是返回一个对象,简言之,就是返回属性或方法“当前”所在的对象。

1
this.property

上面代码中,this表示property属性当前所在的对象

1
2
3
4
5
6
7
var person = {
name: 'linyb',
getName: function() {
return 'name:' + this.name;
}
};
person.getName();//"name:linyb"

上面代码中,this.name表示getName方法所在的当前对象的name属性。调用person.getName时,getName方法所在的当前对象是person,所以返回的是person.name

由于对象的属性可以赋给另一个对象,所以属性所在的当前对象是可变的。即this的指向是可变的。

1
2
3
4
5
6
7
8
9
10
11
12
13
var A = {
name: 'A',
getName: function() {
return 'name=' + this.name;
}
}
var B = {
name : 'B'
}
B.getName = A.getName;
B.getName(); //"name=B"

上面代码中,A.getName属性被赋给B,于是B.getNamethis的当前所在对象是B,所以返回的是B.name

等价于

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function f() {
return 'name=' + this.name;
}
var A = {
name: 'linyb',
getName: f
}
var B = {
name: 'jjt',
getName: f
}
A.getName() //"name=linyb"
B.getName() //"name=jjt"

上面的内码中,函数f的内部使用了this关键字,伴随这f所在的对象的不同,this的指向也不同。

1
2
3
4
5
6
7
8
9
10
var C = {
name: 'zmj',
getName: function() {
return 'name=' + this.name;
}
}
var name = 'coco'
var d = c.getName;
d();//"name=coco"

上面代码中,C.getName被赋值给对象d,而d所在的对象是顶层对象window

综上所述,this可以说是所有函数运行时的一个隐藏参数,指向函数的运行环境。

使用场合

全局环境

在全局环境中使用this,它指的就是顶层对象window.

1
2
3
4
5
this === window // true
function f() {
console.log(this === window); //true
}

上面的代码说明,不管在函数内部还是外部,只要是在全局环境下进行,this 就是指向顶层对象 window

构造函数

构造函数中的this,指的是实例对象。

1
2
3
4
5
6
7
8
9
10
11
var Obj = function(name) {
this.name = name;
}
Obj.prototype.getName = function() {
return this.name;
}
var o = new Obj('linyb');
o.getName(); //"linyb"
o.name; //"linyb"

上面的代码中定义了个构造函数Obj,由于this指向实例对象,所以this.name表示实例对象有一个name属性,getName方法可以返回该属性。

对象的方法
1
2
3
4
5
6
var _obj = {
foo: function() {
console.log(this);
}
}
_obj.foo(); //Object{}

上面代码中,_obj.foo 方法执行时,它的内部this指向_obj。只有在_obj对象上调用foothis才指向_obj,其他用法,this都指向代码块当前所在对象。

文章目录
  1. 1. this 来聊三块钱的呗~
    1. 1.1. 涵义
    2. 1.2. 使用场合
      1. 1.2.0.1. 全局环境
      2. 1.2.0.2. 构造函数
      3. 1.2.0.3. 对象的方法